package Base;

import java.util.Iterator;
import java.util.LinkedList;

class Connexe {

	LinkedList<Arete> arretes;
	LinkedList<SommetBase> sommets;
	
	public Connexe() {
		arretes = new LinkedList<Arete>();
		sommets = new LinkedList<SommetBase>();
	}
	
	public Connexe(LinkedList<Arete> aretes,LinkedList<SommetBase> sommets) {
		this.arretes=aretes;
		this.sommets=sommets;
	}
	
	public boolean peutAjouterSommet( SommetBase s ){
		
		for( SommetBase som : sommets ){
			if( som.compareTo(s) == 0 ){
				return false;
			}
		}
		return true;
	}
	
	public void ajouteSommet( SommetBase s ){
		if( peutAjouterSommet(s)){
			this.sommets.add(s);
		}
	}
	
	public void ajoute(Arete a){

		this.arretes.add(a);
		ajouteSommet(a.sommet1);
		ajouteSommet(a.sommet2);
	}
	
	public SommetBase getSommetBaseOppose(SommetBase sommetPositif){
		
		for(SommetBase sommet : sommets ){
			SommetBase s = sommet;
			if( s.estOppose(sommetPositif.numero )){
				return s;
			}
		}
		return null;
	}
	
	/**
	 * Retourn vrai si le sommet est contenu dans la composante connexe du graphe
	 * @param s SommetBase servant de référence pour la recherche
	 * @return Composante connexe contenant le sommet
	 */
	public boolean contain(SommetBase s){
		return sommets.contains(s);
	}
	
}